package it.mercatino.ordini;

import java.util.List;
import java.util.Map;

import it.mercatino.hibernate.ComposizioneOrdine;
import it.mercatino.hibernate.Ordine;
import it.mercatino.hibernate.Utente;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

/**
 * Action che viene richiamata quando l'utente accede al dettaglio di un
 * ordine.
 * 
 * @author Marco
 *
 */
public class DettaglioOrdineAction extends ActionSupport {

	private static final long serialVersionUID = 1L;
	
	private int idOrdine;
	private Ordine ordine;
	private List<ComposizioneOrdine> composizioneOrdine;
	
	/**
	 * Vengono preparati i dati utili per la visualizzazione della pagina.
	 * 
	 * @return "success", se l'utente ha i diritti di accesso alla
	 * pagina.<br>"error", se non si hanno i diritti di accesso alla 
	 * pagina.
	 * 
	 */
	public String execute() {
		Map session = ActionContext.getContext().getSession();
		Utente utente = (Utente)session.get("loggedUser");
		ordine = OrdineUtil.getInstance().getOrdine(idOrdine);
		if (utente != null && (utente.getUsername().equals(ordine.getUtente().getUsername()) || utente.getAmministratore())) {
			composizioneOrdine = OrdineUtil.getInstance().getDettaglioOrdine(ordine);
			return SUCCESS;
		} else {
			return ERROR;
		}
	}

	/**
	 * @return the idOrdine
	 */
	public int getIdOrdine() {
		return idOrdine;
	}

	/**
	 * @param idOrdine the idOrdine to set
	 */
	public void setIdOrdine(int idOrdine) {
		this.idOrdine = idOrdine;
	}

	/**
	 * @return the ordine
	 */
	public Ordine getOrdine() {
		return ordine;
	}

	/**
	 * @param ordine the ordine to set
	 */
	public void setOrdine(Ordine ordine) {
		this.ordine = ordine;
	}

	/**
	 * @return the composizioneOrdine
	 */
	public List<ComposizioneOrdine> getComposizioneOrdine() {
		return composizioneOrdine;
	}

	/**
	 * @param composizioneOrdine the composizioneOrdine to set
	 */
	public void setComposizioneOrdine(List<ComposizioneOrdine> composizioneOrdine) {
		this.composizioneOrdine = composizioneOrdine;
	}

}
